import by.zmy.aop.*;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

// 3. 使用AOP框架
public class Main {

    public static void main(String[] args) throws Throwable {
        // 创建目标对象
        UserService userService = new UserServiceImpl();
        // 创建切面列表
        List<Aspect> aspects = new ArrayList<>();
        aspects.add(new LogAspect());

        // 创建代理对象
        UserService proxy = AopProxyFactory.createProxy(userService, aspects);

        // 测试
        proxy.addUser("张三");  // 不会被拦截
        System.out.println(proxy.getUser(1));  // 会被拦截
        try {
            proxy.getUser(-1);  // 会被拦截并记录异常
        } catch (Throwable e) {
            System.out.println("捕获异常: " + e.getMessage());
        }
    }
}